package com.zrrd.spring_04.config;

import com.alibaba.druid.pool.DruidDataSource;
import com.zrrd.spring_04.controller.ManagerController;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;

/**
 * @author WanJl
 * @version 1.0
 * @title JdbcConfig
 * @description java连接数据库的配置类
 * @create 2024/10/31
 */
//单独定义的一个配置类
public class JdbcConfig {
    //向第三方bean注入简单类型Bean实例值
    @Value("com.mysql.cj.jdbc.Driver")
    private String driver;
    @Value("jdbc:msyql://localhost:3306/jms_23_2_db")
    private String url;
    @Value("root")
    private String username;
    @Value("789789") //把这个简单类型的值，放到IOC容器里，使用的时候从IOC容器里取值。
    private String password="123456";//是直接赋值

    //配置第三方数据源作为Bean，放到IOC容器中
    //由于我们是配置第三方的类的对象作为bean实例，我们是没办法直接修改第三方类的源码的。
    //也就没办法在第三方的类名上面添加@Component及其衍生注解。
    //所以， 针对于这些第三方的类，可以先创建第三方类的对象，然后通过添加@Bean注解的方式，把这个对象作为bean放进IOC容器中
    //@Bean注解是可以把当前方法的返回值设置为bean实例，放进IOC容器中。
    @Bean("druidDataSource")    //括号里面的是这个bean的别名
    public DruidDataSource getDruidDataSource(ManagerController managerController){

        DruidDataSource druidDataSource = new DruidDataSource();
        druidDataSource.setDriverClassName(driver);
        druidDataSource.setUrl(url);
        druidDataSource.setUsername(username);
        druidDataSource.setPassword(password);
        //向第三方Bean中注入引用数据类型bean实例。
        //spring会自动的从IOC容器中找到ManagerController的bean，赋值给managerController参数
        //---------------------------
        managerController.save();
        //---------------------------

        return druidDataSource;
    }
}
